package datastructure.ch03_linked.ch08_interface_abstract;

/**
 * 
 *
 * @author guodd
 * @version 1.0 use jdk 1.8
 */
public interface List<E> {
    int DEFAULT_CAPACITY = 10;
    int ELEMENT_NOT_FOUND = -1;

    /**
     * 元素数量
     *
     * @return
     */
    int size();

    /**
     * 是否为空列表
     *
     * @return
     */
    boolean isEmpty();

    /**
     * 是否包含某个元素
     *
     * @param element
     * @return
     */
    boolean contains(E element);

    /**
     * 元素出现的位置
     *
     * @param element
     * @return
     */
    int indexOf(E element);

    /**
     * 清除列表
     */
    void clear();

    /**
     * 添加元素
     *
     * @param element
     */
    void add(E element);

    /**
     * 指定索引位置添加元素
     *
     * @param index
     * @param element
     */
    void add(int index, E element);

    /**
     * 删除指定索引元素
     *
     * @param index
     * @return
     */
    E remove(int index);

    /**
     * 修改元素值
     *
     * @param index
     * @param element
     * @return
     */
    E set(int index, E element);

    /**
     * 获取元素
     *
     * @param index
     * @return
     */
    E get(int index);
}
